package indi.cloud.common.service;

import com.alibaba.fastjson.JSONObject;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @author yangyifan
 * @version 1.0
 * @date 2023/4/4 11:56
 * @Description
 */
public interface CommonDownLoadService<T> {
    /**
     * 下载指定实体类模板模式
     *
     * @param response
     * @param fileName   文件名称
     * @param data       返回的数据集，用来生成excel
     * @param excelModel excel模板
     */
    void export(HttpServletResponse response, String fileName, List data, Class<T> excelModel);


    /**
     * 下载无实体类模板，自定义表头模式
     *
     * @param response
     * @param fileName   文件名称
     * @param data       返回的数据集，用来生成excel
     * @param columnName 自定义列名 例：[{"name："全称","field":"Name"},{"name："简称","field":"shortName"}]  ,也可在field_mapping表自定义数据
     */
    void export(HttpServletResponse response, String fileName, List<JSONObject> data, List<JSONObject> columnName);


    /**
     * 下载无实体类模板，自定义表头模式
     *
     * @param response
     * @param fileName   文件名称
     * @param data       返回的数据集，用来生成excel,每个sheet的数据
     * @param columnName 每个sheet的自定义列名 例：[{"name："全称","field":"Name"},{"name："简称","field":"shortName"}]  ,也可在field_mapping表自定义数据
     * @param sheetName  每个sheet的sheet名称
     */
    void exportManySheet(HttpServletResponse response, String fileName, List<List<Object>> data, List<List<JSONObject>> columnName,List<String> sheetName);
}
